package com.software.levelupandroid.views;

import android.content.Context;
import android.util.AttributeSet;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.google.android.material.appbar.CollapsingToolbarLayout;

/**
 * @Description TODO
 * @Author LiangYaJie
 * @CreateTime 2024年05月01日 16:55:14
 */
public class NestCollapsingToolbarLayout extends CollapsingToolbarLayout {

    //用户追踪当前是否显示了scrims（通常是背景的渐变效果）
    private boolean mIsScrimsShown;
    //监听scrims的显示状态变化，并做一些相关操作
    private OnScrimsShowListener scrimsShowListener;

    public NestCollapsingToolbarLayout(@NonNull Context context) {
        super(context);
        this.mIsScrimsShown = false;
    }

    public NestCollapsingToolbarLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        this.mIsScrimsShown = false;
    }

    public NestCollapsingToolbarLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.mIsScrimsShown = false;
    }

    /**
     * 重写父类的setScrimsShown方法
     * @param shown 用于指示是否应该显示scrims（背景渐变效果）
     * @param animate 显示或隐藏scrims时是否有动画效果
     */
    @Override
    public void setScrimsShown(boolean shown, boolean animate) {
        super.setScrimsShown(shown, animate);
        if (mIsScrimsShown != shown){
            mIsScrimsShown = shown;
            if (scrimsShowListener != null){
                scrimsShowListener.onScrimsShowChange(this, mIsScrimsShown);
            }
        }
    }

    public void setScrimsShowListener(OnScrimsShowListener scrimsShowListener) {
        this.scrimsShowListener = scrimsShowListener;
    }

    /**
     * 内部接口，定义了当scrims显示状态发生变化时应该调用的方法。
     */
    public interface OnScrimsShowListener {
        void onScrimsShowChange(NestCollapsingToolbarLayout nestCollapsingToolbarLayout, boolean isScrimsShow);
    }
}
